/*
 * Copyright 2018-9-30 20:11:43 The JA-SIG Collaborative. All rights reserved.
 * distributed with thi file and available online at
 */
package com.lap.scp.erp.domain;

import org.apache.commons.lang3.builder.ReflectionToStringBuilder;

import com.lap.scd.commons.domain.IntegerDO;

/**
 * <pre>
 *  收款信息，记录合同的收款信息，可以有多条记录，并记录每个阶段的金额，其中一些通用字段在ModelDO和BaseDO里面，该对象基本上只用于数据保存使用。
 *   对应的表名：receivables
 *
 *	如果说界面业务复杂，有特别需要，需要在额外定义Bean对象来接收界面数据。
 * </pre>
 * 
 * @author 劳水生 Exp
 * @Date 2018-9-30 20:11:43
 * @since 2.0.0
 */
public class ReceivablesDO extends IntegerDO {
	private static final long serialVersionUID = 4585424219494922156L;
	/**
	 * <pre>
	 * 数据库字段:
	 * 	contract_id
	 * 备注:
	 *  合同ID;字段的长度:11,可否为空:是。
	 * </pre>
	 */
	private Integer contractId;
	/**
	 * <pre>
	 * 数据库字段:
	 * 	total_amount
	 * 备注:
	 *  应收金额，单位：分;字段的长度:11,可否为空:是。
	 * </pre>
	 */
	private Integer totalAmount = 0;
	/**
	 * <pre>
	 * 数据库字段:
	 * 	received_amount
	 * 备注:
	 *  已收金额：单位：分;字段的长度:11,可否为空:是。
	 * </pre>
	 */
	private Integer receivedAmount = 0;
	/**
	 * <pre>
	 * 数据库字段:
	 * 	periods
	 * 备注:
	 *  收款信息的款期，即：该记录是哪一期的收款;字段的长度:11,可否为空:是。
	 * </pre>
	 */
	private Integer periods;
	/**
	 * <pre>
	 * 数据库字段:
	 * 	remark
	 * 备注:
	 *  收款的一些备注;字段的长度:512,可否为空:否。
	 * </pre>
	 */
	private String remark;

	// 页面字段
	/**
	 * 页面总金额字段
	 */
	private Double pageTotalAmount;
	/**
	 * 页面已收金额
	 */
	private Double pageReceivedAmount;

	/**
	 * @return 合同ID
	 */
	public void setContractId(Integer contractId) {
		this.contractId = contractId;
	}

	/**
	 * 合同ID
	 * 
	 * @param contractId
	 */
	public Integer getContractId() {
		return contractId;
	}

	/**
	 * @return 应收金额，单位：分
	 */
	public void setTotalAmount(Integer totalAmount) {
		this.totalAmount = totalAmount;
	}

	/**
	 * 应收金额，单位：分
	 * 
	 * @param totalAmount
	 */
	public Integer getTotalAmount() {
		return totalAmount;
	}

	/**
	 * @return 已收金额：单位：分
	 */
	public void setReceivedAmount(Integer receivedAmount) {
		this.receivedAmount = receivedAmount;
	}

	/**
	 * 已收金额：单位：分
	 * 
	 * @param receivedAmount
	 */
	public Integer getReceivedAmount() {
		return receivedAmount;
	}

	/**
	 * @return 收款信息的款期，即：该记录是哪一期的收款
	 */
	public void setPeriods(Integer periods) {
		this.periods = periods;
	}

	/**
	 * 收款信息的款期，即：该记录是哪一期的收款
	 * 
	 * @param periods
	 */
	public Integer getPeriods() {
		return periods;
	}

	/**
	 * @return 收款的一些备注
	 */
	public void setRemark(String remark) {
		this.remark = remark;
	}

	/**
	 * 收款的一些备注
	 * 
	 * @param remark
	 */
	public String getRemark() {
		return remark;
	}

	public Double getPageTotalAmount() {
		if (totalAmount != null) {
			pageTotalAmount = Math.rint(totalAmount / 100.0);
		}
		return pageTotalAmount;
	}

	public void setPageTotalAmount(Double pageTotalAmount) {
		if (pageTotalAmount != null) {
			this.totalAmount = (int) Math.rint(pageTotalAmount * 100.0);
		}
		this.pageTotalAmount = pageTotalAmount;
	}

	public Double getPageReceivedAmount() {
		if (receivedAmount != null) {
			pageReceivedAmount = Math.rint(receivedAmount / 100.0);
		}
		return pageReceivedAmount;
	}

	public void setPageReceivedAmount(Double pageReceivedAmount) {
		if (pageReceivedAmount != null) {
			this.receivedAmount = (int) Math.rint(pageReceivedAmount * 100.0);
		}
		this.pageReceivedAmount = pageReceivedAmount;
	}

	@Override
	public String toString() {
		return ReflectionToStringBuilder.toString(this);
	}

}
